1 using UnityEngine;
2 using
UnityEngine.Assertions;
3
4 namespace
ProceduralToolkit.Examples
5 {
6     
public class HorizontalLayout : FacadeLayout
7     {
8         
public override MeshDraft GetMeshDraft()
9         {
10             Assert.IsTrue(origin.HasValue);
11             Assert.IsTrue(width.HasValue);
12
13             
var draft = new MeshDraft();
14             
float occupiedWidth = 0;
15             
int count = 0;
16             
for (int i = 0; i < facadePanels.Count; i++)
17             {
18                 
var facadePanel = facadePanels[i];
19                 
if (facadePanel.width.HasValue)
20                 {
21                     occupiedWidth += facadePanel.width.Value;
22                     count++;
23                 }
24             }
25
26             
float freeWidth = width.Value - occupiedWidth;
27             Assert.IsTrue(freeWidth >=
0);
28             
float panelWidth = freeWidth/(facadePanels.Count - count);
29
30             Vector2 currentPosition = origin.Value;
31             
for (int i = 0; i < facadePanels.Count; i++)
32             {
33                 
var facadePanel = facadePanels[i];
34                 facadePanel.origin = currentPosition;
35                 
if (!facadePanel.width.HasValue)
36                 {
37                     facadePanel.width = panelWidth;
38                 }
39                 
if (!facadePanel.height.HasValue)
40                 {
41                     facadePanel.height = height;
42                 }
43                 currentPosition += Vector2.right*facadePanel.width.Value;
44                 draft.Add(facadePanel.GetMeshDraft());
45             }
46             
return draft;
47         }
48     }
49 }


Gõ tìm kiếm nhanh...